/**
 * 饲养员
 *
 * @author zhu
 * @date 2024-04-06
 */
public abstract class Raiser<T extends Animal> {
    private String name;
    public void feeding(T animal){
        System.out.println(this.name + "喂养了" + animal);
        animal.eat();
    }
    public void inspect(T animal){
        // 第一：获取操作类/对象的 Class 对象
        Class<? extends Animal> clazz = animal.getClass();

        // 第二：判断是否存在注解
        if (clazz.isAnnotationPresent(Sleep.class)) {
            // 第三：获取注解对象
            Sleep annotation = clazz.getAnnotation(Sleep.class);

            // 第四：获取注解对象的值
            String value = annotation.value();

            // 第五：加工处理
            if ("失眠".equals(value)) {
                System.out.println("给你一颗安眠药");
            }
            System.out.println("继续巡查...");
        }

        System.out.println(this.name + "对" + animal + "进行了巡查");
    }
    public void examination(T animal){
        // 第一：获取操作类/对象的 Class 对象
        Class<? extends Animal> clazz = animal.getClass();

        // 第二：判断是否存在注解
        if (clazz.isAnnotationPresent(Health.class)) {
            // 第三：获取注解对象
            // 第四：获取注解对象的值
            String value = clazz.getAnnotation(Health.class).value();

            // 第五：加工处理
            if ("差".equals(value)) {
                System.out.println("需要特别照看");
            }
            System.out.println("继续体验...");
        }

        System.out.println(this.name + "为" + animal + "进行了体检");
    }

    public Raiser() {
    }

    public Raiser(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}
